#匿名函数
# f=lambda x:x+1
# print(f(4))
# print(f(5))
#在编写匿名函数时，由于受限 函数体只能写一行，所以匿名函数只能处理非常简单的功能。
# my_func=[lambda x,y:x-y,lambda x,y:x+y,lambda x,y:x*y,lambda x,y:x/y,lambda x,y:x%y]
# print(my_func[0](6,4))
# print(my_func[1](4,2))
# print(my_func[2](4,2))
# print(my_func[3](4,2))
# print(len(my_func))
# for i in range(len(my_func)):
#     print(my_func[i](4, 2))
import random

#三元运算的实现
# num=input("输入数字：")
# if num=='1':
#     print("hello")
# else:
#     print("goodbye")
#

# num=int(input("Enter a number:"))
# print("hello") if num==1 else print("goodbye")

# #匿名函数，lambda结合三元运算就可以实现比较复杂的功能
# func = lambda x: "大了" if x > 66 else "小了"
# print(func(1)) # "小了"
# print(func(100)) # "大了"

#生成器
#有yield存在的时候就是生成器函数
# def func():
#     print(111)
#     yield 1
#     print(222)
#     yield 2
#     print(333)
#     yield 3
#     print(444)
# data=func()
# print(data,type(data))
# v1=next(data)
# print(v1)
# v2=next(data)
# print(v2)
# v3=next(data)
# print(v3)

# 执行生成器函数func，返回的生成器对象。
# 注意：执行生成器函数时，函数内部代码不会执行。 结束或中途遇到return，程序爆：StopIteration 错误

#一次性生成
# val_lsit=[]
# for i in range(30000):
#     val=random.randint(1000,9999)
#     val_lsit.append(i)
# print(val_lsit)

#动态生成

# def func(num):
#     val_list=[]
#     for i in range(num):
#         val_list.append(random.randint(1000,9999))
#     return val_list
# val_list=func(10)
# print(val_list)

#扩展
# def func():
#     print(111)     #111
#     v1 = yield 1    #1
#     print(v1)       #666
#     print(222)      #222
#     v2 = yield 2    #2
#     print(v2)       #777
#     print(333)      #333
#
# data = func()
#
# n1 = data.send(None)
# print(n1)
# n2 = data.send(666)
# print(n2)
# data.send(777)
# 111
# 1
# 666
# 222
# 2
# 777
# 333

